#ifndef FORK_H_
#define FORK_H_

#include <vector>
#include "ComponentDER.h"

/**
 * Clase que permite la bifurcacion de una via
 */
class Fork : public ComponentDER {
	virtual void initializeConnectors();

	Entity *m_padre;
	Connector *m_conectorAlPadre;
	std::vector<Entity *> m_hijos;
	std::vector<Connector *> m_conectoresALosHijos;

public:
	Fork(const std::string & name = TARGET_FORK, int orientation = 0);

	Fork(const Fork &);
	Fork& operator=(const Fork&);

	virtual void serialize(XmlWriter & writer_rep, XmlWriter & writer_comp);

	virtual void update();
	virtual std::string description();

	Entity *getPadre() { update(); return m_padre;}
	Connector *getConectorAlPadre() {return m_conectorAlPadre;}
	std::vector<Entity *> getHijos() {update();return m_hijos;}
	std::vector<Connector *> getConectoresALosHijos() {return m_conectoresALosHijos;}
};

#endif /* FORK_H_ */
